package com.petsdar.service;

import com.petsdar.dao.EmpMapper;
import com.petsdar.pojo.Emp;
import com.petsdar.utils.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Random;

/**
 * Created with IntelliJ IDEA
 * User: heroC
 * Date: 2020/7/5
 * Time: 15:11
 * Description: 员工service层
 * 获取员工信息业务逻辑处理；
 * 添加员工信息业务逻辑处理；
 * 更新员工信息业务逻辑处理；
 * 删除员工信息业务逻辑处理
 * Version: V1.0
 */

@Service
public class EmpServiceImpl implements EmpService {

    /** 员工信息持久化操作实例对象 */
    private EmpMapper empMapper;

    @Autowired
    public void setEmpMapper(EmpMapper empMapper) {
        this.empMapper = empMapper;
    }

    /**
     * 获取所有员工信息
     * @return
     */
    @Override
    public List<Emp> getEmp() {
        List<Emp> emp = empMapper.getEmp();
        return emp;
    }

    /**
     * 对empJson进行json解析成emp对象，随机生成emp的ID，
     * 对emp的创建时间、更新时间设置。完善emp对象后，对
     * 其持久化操作。
     * @param empJson 员工相关Json数据
     * @return
     */
    @Override
    public boolean addEmp(String empJson) {
        Emp emp = JsonUtil.toObject(empJson, Emp.class, EmpServiceImpl.class);
        Date date = new Date();
        Random random = new Random();
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddss");
        emp.setEmpId(new BigInteger(format.format(date)+((random.nextInt(90)+10))));
        emp.setEmpCreateTime(date);
        emp.setEmpUpdateTime(date);
        int count = empMapper.addEmp(emp);
        if (count == 1){
            return true;
        }
        return false;
    }

    /**
     * 对empJson进行json解析成emp对象，对emp的更新时间设置。
     * 完善emp对象后，对其持久化操作。
     * @param empJson 员工相关Json数据
     * @return
     */
    @Override
    public boolean updateEmp(String empJson) {
        Emp emp = JsonUtil.toObject(empJson, Emp.class, EmpServiceImpl.class);
        Date date = new Date();
        emp.setEmpUpdateTime(date);
        int count = empMapper.updateEmp(emp);
        if (count == 1){
            return true;
        }
        return false;
    }

    /**
     * 通过empId对其进行删除数据操作。
     * @param empId 员工ID
     * @return
     */
    @Override
    public boolean delEmp(String empId) {
        if (empId!=null || empId.equals("")){
            int count = empMapper.delEmp(empId);
            if (count == 1){
                return true;
            }
        }
        return false;
    }
}
